# Species % biomass and abundance by stationspecies_abundance <- trawling_data_evhoe21 %>%# selection of mesopelagic trawlfilter(Code_Station %in%c("Z0524", "Z0518", "Z0512", "Z0508","Z0503", "Z0497", "Z0492")) %>%#deletion when only genus name and genus already sampled in isotopy + A. carbofilter(!Nom_Scientifique %in%c("Cyclothone braueri","Cyclothone microdon","Myctophidae","Aphanopus carbo" ) ) %>%mutate(depth_layer =case_when( Code_Station %in%c("Z0508") ~"epipelagic", Code_Station %in%c("Z0492", "Z0512") ~"upper-mesopelagic", Code_Station %in%c("Z0503", "Z0518") ~"lower-mesopelagic", Code_Station %in%c("Z0497") ~"bathypelagic", Code_Station %in%c("Z0524") ~"bottom-proximity" ) ) %>%select(depth_layer, Nbr, Nom_Scientifique, Tot_V_HV) %>%group_by(Nom_Scientifique, depth_layer) %>%mutate(nb_ind =sum(Nbr)) %>%select(-Nbr) %>%distinct() %>%group_by(depth_layer) %>%mutate(sum_biomass_station =sum(Tot_V_HV)) %>%ungroup() %>%group_by(depth_layer, Nom_Scientifique) %>%mutate(pourcentage_biomass_sp = Tot_V_HV / sum_biomass_station *100) %>%select(Nom_Scientifique, pourcentage_biomass_sp, nb_ind, depth_layer) %>%mutate(across(where(is.numeric), round, 2))htmltools::tagList(DT::datatable(species_abundance))
Calculation
Formatting of data and calculation of relative biomass within each station
Show the code
# sourcing the R functions from 'si_div' R scriptsource("R/si_div.R")# species_status_biomass ----# with all species sampled (not only species sampled for isotope)species_status_biomass <- trawling_data_evhoe21 %>%# selection of mesopelagic trawlfilter(Code_Station %in%c("Z0524", "Z0518", "Z0512", "Z0508","Z0503", "Z0497", "Z0492")) %>%#deletion when only genus name and genus already sampled in isotope + A. carbofilter(!Nom_Scientifique %in%c("Cyclothone braueri","Cyclothone microdon","Myctophidae","Aphanopus carbo","Lampanyctus" ) ) %>%# group by depth layer mutate(Status =case_when( Code_Station %in%c("Z0508") ~"epipelagic", Code_Station %in%c("Z0492", "Z0512") ~"upper-mesopelagic", Code_Station %in%c("Z0503", "Z0518") ~"lower-mesopelagic", Code_Station %in%c("Z0497") ~"bathypelagic", Code_Station %in%c("Z0524") ~"bottom-proximity" ) ) %>%select(Status, Tot_V_HV, Nom_Scientifique, Code_Espece_Campagne) %>%distinct() %>%# sum species biomass by depth layergroup_by(Nom_Scientifique, Status) %>%mutate(biomass_sp =sum(Tot_V_HV)) %>%select(-Tot_V_HV) %>%distinct() %>%# sum of total biomass by depth layergroup_by(Status) %>%mutate(biomass_tot =sum(biomass_sp)) %>%# relative biomass of each species by stationmutate(rel_biomass = biomass_sp / biomass_tot *100) %>%select(-c(biomass_sp, biomass_tot)) %>%# selection of species sampled for isotopy in each depthfilter( Status =="epipelagic"& Nom_Scientifique %in%c("Lestidiops sphyrenoides","Maurolicus muelleri","Myctophum punctatum","Notoscopelus kroyeri","Notoscopelus bolini" ) | Status =="upper-mesopelagic"& Nom_Scientifique %in%c("Arctozenus risso","Argyropelecus olfersii","Lampanyctus crocodilus","Myctophum punctatum","Notoscopelus kroyeri","Xenodermichthys copei" ) | Status =="lower-mesopelagic"& Nom_Scientifique %in%c("Arctozenus risso","Argyropelecus olfersii","Cyclothone","Benthosema glaciale","Lampanyctus crocodilus","Maulisia argipalla","Searsia koefoedi","Serrivomer beanii","Xenodermichthys copei" ) | Status =="bathypelagic"& Nom_Scientifique %in%c("Argyropelecus olfersii","Lampanyctus crocodilus","Lampanyctus macdonaldi","Myctophum punctatum","Serrivomer beanii","Xenodermichthys copei" ) | Status =="bottom-proximity"& Nom_Scientifique %in%c("Argyropelecus olfersii","Lampanyctus crocodilus","Melanostigma atlanticum","Serrivomer beanii","Xenodermichthys copei" ) ) %>%mutate(Species_code =tolower(Code_Espece_Campagne)) %>%rename(Species_name = Nom_Scientifique) %>%select(-Code_Espece_Campagne) %>%relocate(Status, .after = rel_biomass) %>%relocate(Species_code, .after = Species_name) %>%arrange(Species_code) %>%distinct()# Format indiviudal_si to match si_div function ----# species code with species namesspecies_code <- species_status_biomass %>%ungroup() %>%select(Species_name, Species_code) %>%distinct()# Format indiviudal_si to match si_div function ----individuals_si <- isotope_data_fish %>%select(species, station, d13c, d15n) %>%rename(d13C = d13c,d15N = d15n,Species_name = species) %>%group_by(Species_name) %>%# add a unique code for each individumutate(indiv_ID =paste(Species_name, row_number(), sep ="_")) %>%left_join(species_code, by ="Species_name") %>%ungroup() %>%select(-Species_name) %>%relocate(indiv_ID, .before = d13C) htmltools::tagList(DT::datatable(species_status_biomass))
percentage of biomass sampled for isotopy in each depth layer
# 25m Z0508 ----individuals_si_epi <- individuals_si%>%filter(station =="Z0508")%>%select(-station)status_biomass_epi <- species_status_biomass%>%filter(Status=="epipelagic")# computing mean Stable Isotope values for each species# "group" column identical to species_code to fit with input format of function meanSI_group# no "weight" input as number of individuals sampled per species did not mirror actual species biomassindividuals_si_epi <- individuals_si_epi %>%as.data.frame() %>%mutate(group = Species_code)mean_si_species_epi<-meanSI_group(individuals_si_epi)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_epi[,"sd_d13C"]/mean_si_species_epi[,"d13C"], CV_d15N=mean_si_species_epi[,"sd_d15N"]/mean_si_species_epi[,"d15N"] )
# -> intraspecific variability is overall low (<20%)# checking that species codes are the same in the two tablesrow.names(mean_si_species_epi)==status_biomass_epi[,"Species_code"] # OK
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_epi <-data.frame(mean_si_species_epi[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_epi[,"rel_biomass"], Status=status_biomass_epi[,"Status"], latin_name=status_biomass_epi[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_epi<-scaleSI_range01(data_fish_epi)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_epi<-IDiversity(cons=data_fish_scl_epi, weight=data_fish_scl_epi[,c("rel_biomass")], nm_plot="1_epipelagic")# printing resultsresult <-as.data.frame(round(ID_scl_ab_epi,3))
epipelagic_d13C_d15N
Upper mesopelagic
370m (Z0492) & 555m (Z0512)
Show the code
individuals_si_upm <- individuals_si%>%filter(station%in%c("Z0492", "Z0512"))%>%select(-station)status_biomass_upm <- species_status_biomass%>%filter(Status=="upper-mesopelagic")# computing mean Stable Isotope values for each speciesindividuals_si_upm <- individuals_si_upm %>%as.data.frame() %>%mutate(group = Species_code)mean_si_species_upm<-meanSI_group(individuals_si_upm)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_upm[,"sd_d13C"]/mean_si_species_upm[,"d13C"], CV_d15N=mean_si_species_upm[,"sd_d15N"]/mean_si_species_upm[,"d15N"] )
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_upm <-data.frame(mean_si_species_upm[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_upm[,"rel_biomass"], Status=status_biomass_upm[,"Status"], latin_name=status_biomass_upm[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_upm<-scaleSI_range01(data_fish_upm)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_upm<-IDiversity(cons=data_fish_scl_upm, weight=data_fish_scl_upm[,c("rel_biomass")], nm_plot="2_upper_meso")# printing resultsresult <-as.data.frame(round(ID_scl_ab_upm,3))
370m
Lower mesopelagic
715m (Z0503)
1000m (Z0518)
Show the code
individuals_si_lwm <- individuals_si%>%filter(station%in%c("Z0503", "Z0518"))%>%select(-station)status_biomass_lwm<- species_status_biomass%>%filter(Status=="lower-mesopelagic")# computing mean Stable Isotope values for each speciesindividuals_si_lwm <- individuals_si_lwm %>%as.data.frame() %>%mutate(group = Species_code)mean_si_species_lwm<-meanSI_group(individuals_si_lwm)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_lwm[,"sd_d13C"]/mean_si_species_lwm[,"d13C"], CV_d15N=mean_si_species_lwm[,"sd_d15N"]/mean_si_species_lwm[,"d15N"] )
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_lwm <-data.frame(mean_si_species_lwm[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_lwm[,"rel_biomass"], Status=status_biomass_lwm[,"Status"], latin_name=status_biomass_lwm[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_lwm<-scaleSI_range01(data_fish_lwm)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_lwm<-IDiversity(cons=data_fish_scl_lwm, weight=data_fish_scl_lwm[,c("rel_biomass")], nm_plot="3_lower-mesopelagic")# printing resultsresult <-as.data.frame(round(ID_scl_ab_lwm,3))
715m
Bathypelagic
1335m (Z0497)
Show the code
individuals_si_bathy <- individuals_si%>%filter(station=="Z0497")%>%select(-station)status_biomass_bathy <- species_status_biomass%>%filter(Status=="bathypelagic")# computing mean Stable Isotope values for each speciesindividuals_si_bathy <- individuals_si_bathy %>%as.data.frame() %>%mutate(group = Species_code)mean_si_species_bathy<-meanSI_group(individuals_si_bathy)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_bathy[,"sd_d13C"]/mean_si_species_bathy[,"d13C"], CV_d15N=mean_si_species_bathy[,"sd_d15N"]/mean_si_species_bathy[,"d15N"] )
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_bathy <-data.frame(mean_si_species_bathy[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_bathy[,"rel_biomass"], Status=status_biomass_bathy[,"Status"], latin_name=status_biomass_bathy[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_bathy<-scaleSI_range01(data_fish_bathy)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_bathy<-IDiversity(cons=data_fish_scl_bathy, weight=data_fish_scl_bathy[,c("rel_biomass")], nm_plot="4_bathypelagic")# printing resultsresult <-as.data.frame(round(ID_scl_ab_bathy,3))
bathypelagic
Near bottom
Z0524
Show the code
# 1010 Z0524 ----individuals_si_nb <- individuals_si%>%filter(station=="Z0524")%>%select(-station)status_biomass_nb <- species_status_biomass%>%filter(Status=="bottom-proximity")# computing mean Stable Isotope values for each speciesindividuals_si_nb <- individuals_si_nb %>%as.data.frame() %>%mutate(group = Species_code)mean_si_species_nb<-meanSI_group(individuals_si_nb)# computing coefficent of variation within each species to assess intraspecific variabilitycbind(CV_d13C=mean_si_species_nb[,"sd_d13C"]/mean_si_species_nb[,"d13C"], CV_d15N=mean_si_species_nb[,"sd_d15N"]/mean_si_species_nb[,"d15N"] )
# building a single dataframe with all data for computing isotopic diversity indicesdata_fish_nb <-data.frame(mean_si_species_nb[,c("d13C","d15N", "sd_d13C","sd_d15N")], rel_biomass=status_biomass_nb[,"rel_biomass"], Status=status_biomass_nb[,"Status"], latin_name=status_biomass_nb[,"Species_name"])# scaling mean stable isotopes values using function "scale_rge01"data_fish_scl_nb<-scaleSI_range01(data_fish_nb)# computing isotopic diversity of the whole fish assemblage using scaled isotopic values and species relative biomassID_scl_ab_nb<-IDiversity(cons=data_fish_scl_nb, weight=data_fish_scl_nb[,c("rel_biomass")], nm_plot="5_near_bottom")# printing resultsresult <-as.data.frame(round(ID_scl_ab_nb,3))